      1  import java.util.Random;

      2

      3  /**

      4     This program computes an estimate of pi by simulating dart throws onto a square.

      5  */

      6  public class MonteCarlo

      7  {

      8     public static void main(String[] args)

      9     {

     10        final int TRIES = 10000;

     11        Random generator = new Random();

     12

     13        int hits = 0;

     14        for (int i = 1; i <= TRIES; i++)

     15        {

     16           // Generate two random numbers between -1 and 1

     17

     18           double r = generator.nextDouble();

     19           double x = -1 + 2 * r;

     20           r = generator.nextDouble();

     21           double y = -1 + 2 * r;

     22

     23           // Check whether the point lies in the unit circle

     24

     25           if (x * x + y * y <= 1) { hits++; }

     26        }

     27

     28        /*

     29           The ratio hits / tries is approximately the same as the ratio

     30           circle area / square area = pi / 4

     31        */

     32

     33        double piEstimate = 4.0 * hits / TRIES;

     34        System.out.println("Estimate for pi: " + piEstimate);

     35     }

     36  }